package com.hunan.api.catv.dao;

import java.util.List;

/**
 * DAO
 *
 * @param <P>  PO
 * @param <V>  VO
 * @param <PK> 主键类型
 */
public interface BaseDao<P, V, PK> {


    /**
     * 根据ID查询详情
     *
     * @param pk
     * @return
     */
    public V getById(PK pk);


    /**
     * 查询详情
     *
     * @param p
     * @return
     */
    public V get(P p);


    /**
     * 新增
     *
     * @param p
     * @return 主键
     */
    public Integer add(P p);

    /**
     * 修改
     *
     * @param p
     * @return 修改记录行数
     */
    public Integer update(P p);


    /**
     * 列表查询
     *
     * @param p
     * @return
     */
    public List<V> list(P p);

    /**
     * 列表ID
     *
     * @param p
     * @return
     */
    public List<PK> listIds(P p);

    /**
     * 删除
     *
     * @param pk
     * @return 删除记录行数
     */
    public Integer delete(PK pk);

    /**
     * 删除
     *
     * @param
     * @return 删除记录行数
     */
    public Integer batchDelete(P p);


    /**
     * 批量添加
     *
     * @param list
     * @return
     */
    public Integer batchAdd(List<P> list);

    /**
     * 批量修改
     *
     * @param list
     * @return
     */
    public Integer batchUpdate(List<P> list);

    /**
     * 查询
     *
     * @param
     * @return 次数
     */
    public Integer count(P p);

    /**
     * 查询简单详情
     *
     * @param pk
     * @return
     */
    public V simpleInfo(PK pk);


    public List<V> simpleList(P p);
}
